﻿using System;
using System.Text.Json;
using System.Text.Json.Serialization;
using NewLife;

namespace Zero.WebApi.Common;

public class DateTimeConverter : JsonConverter<DateTime>
{
    public String DateTimeFormat { get; set; } = "yyyy-MM-dd HH:mm:ss";

    public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        var str = reader.GetString();
        var utc = false;
        if (str.EndsWith("UTC"))
        {
            str = str.TrimEnd("UTC").Trim();
            utc = true;
        }
        if (!DateTime.TryParse(str, out var dt)) return DateTime.MinValue;

        if (utc) dt = dt.ToLocalTime();

        return dt;
    }

    public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options) => writer.WriteStringValue(value.ToString(DateTimeFormat));
}